\section{Model description}

In this section, we will precisely explain and justify every "use" link of our model.

\subsection{FormRecorder USE DuplicateDetection}
If the DuplicateDetection module doesn't detect correctly the duplicates emergencies, FormRecorder
cannot avoid registering duplicate emergencies ( see specification of FormRecorder)

\subsection{FormRecorder USE Database}
If the database is buggy (for example, emergencies not correctly
stored),FormRecorder cannot avoid registering duplicate emergencies. 

%\subsection{DuplicateDetection USE Database}
%If the database doesn't provide ACID properties, DuplicateDetection
%cannot  see if an emergency is already stored in the database.

%\subsection{InterventionController USE Database}
%If the database is buggy, interventionController cannot retrieve information about
%emergencies in the database and repercute their status into the DB. 

\subsection{AssignmentManager USE Assigner}
If the assigner doesn't assign ambulances to emergencies, AssignmentManager
cannot follow the ambulance and make sure that it will arrive on place.

\subsection{AssignmentManager USE TeamNotifier}
If the system of notification fails, AssignmentManager will not see
if the team has acknowledged an intervention or not and will not be able to assign an
ambulance if this is not the case.
 
If the TeamNotifier does not correctly track information about the team, the AssignmentManager will not be able to correctly deduct the state of an assignment.
\subsection{AssignmentManager USE InterventionController}
If the status of interventions is not correctly followed,
AssignmentManager will not respect his postcondition of assigning a new ambulance if the intervention failed. 
%\subsection{AssignmentManager USE }

\subsection{Simulator USE I/O}
If the I/O module does not access files correctly, the Simulator will not be able to load scenarios and will not respect its specifications.
%\subsection{Simulator USE GUIMap}

\subsection{Simulator USE Witness}
If the Witness does not correctly fire the Emergencies, the Simulator is not able to continue its scenarios.

\subsection{Simulator USE EmergencyGenerator}
If there are no emergencies generated or the emergencies are generated outside a considered map, the simulator
will not be able to simulate the real-world, as it will not detect the emergencies. 

\subsection{Simulator USE AmbulanceSimulator}
If the AmbulanceSimulator is buggy(for example : teleportation of ambulances), the
real-world is not simulated correctly

\subsection{Assigner USE Map}
If the Map doesn't compute correctly the distance between two points, Assigner cannot respect
the reqpost of operation AssignAmbulance (i.e. choosing the closest ambulance to the emergency)

\subsection{AmbulanceManager USE Database}
If the database is not persistent for example, AmbulanceManager cannot get the status of the different
ambulances of the system.

\subsection{AmbulanceManager USE Radio}
If the Radio is not able to transmit information from the MDT, AmbulanceManager cannot
keep track of the current status of the ambulance.

\subsection{Radio USE MDT}
If the MDT fails at gathering information about the ambulance , Radio will not be able to transmit ambulance
information to the AmbulanceManager (see specification of Radio). Indeed, Radio acts like a filter
that transmits only Ambulance information.

%\subsection{MDT USE Screen}

\subsection{Assigner USE AmbulanceManager}
If the AmbulanceManager doesn't know if the ambulances are free,
Assigner will not be able to choose an ambulance that is free for an emergency.



\subsection{MDT USE GPS}
If the GPS is not able to get the positions of the ambulances, the MDT will not respect
the postcondition of gathering position information about the ambulances
\subsection{MDT USE Speedometer}
If the Speedometer doesn't reflect the spped of the ambulances, the MDT will not respect
the postcondition of gathering speed information about the ambulances

%\subsection{Speedometer EXPORT(speed) MDT}
%\subsection{GPS EXPORT(position) MDT}
\subsection{AmbulanceSimulator USE EnvironmentDatabase}
If the EnvironmentDatabase does not return information correctly, the AmbulanceSimulator will not be able to save its movements and whereabouts.
%\subsection{GPS USE EnvironmentDatabase}
\subsection{EmergencyGenerator USE EnvironmentDatabase}
If the database is not able to store information correctly,EmergencyGenerator cannot
save position of emergencies in the database, and the emergencies generated will not
correspond to a particular environment.

\subsection{I/O USE EnvironmentDatabase}
If the EnvironmentDatabase module doesn't store all the information
about position of ambulances or emergencencies, the scenario generated by I/O module
may not correspond to the considered environment or map.

\subsection{EmergencyGenerator USE Map}
If we are not able to get information about roads,EmergencyGenerator
will not generate emergencies at a correct location.

\subsection{AmbulanceSimulator USE Map}
If we are not able to get information about roads, AmbulanceSimulator
will not be able to move ambulances where there are practicable roads or to generate
new ambulances at a correct location. 